QaNote
Testing Mindset: Testing is the process of executing a program with the intent of finding errors. =Psychology= * Testing is the process of executing a program with the intent of finding errors ** prove the existence of defect =Test Types= * Integration tests, ...different units of work are combined into a workflow. * Functional tests, corresponds to testing application use cases. * Stress and load tests, ...how well will the application perform when many people are using it at once. * Acceptance tests, ...the application must also meet the customer’s needs. acceptance{ stress/load{ functional{ integration{ unit; } // out of integration } // out of functional } // out of stress/load } // out of acceptance * Unit Testing Three flavors of unit tests: logic, integration, and functional. functional unit test{ integration unit test{ logic unit test; } // out of integration } ; Logic unit test : A test that exercises code by focusing on a single method. You can control the boundaries of a given test method using mock objects or stubs. ; Integration unit test : A test that focuses on the interaction between components in their real environment (or part of the real environment). For example, code that accesses a database has tests that effectively call the database ; Functional unit test : A test that extends the boundaries of integration unit testing to confirm a stimulus response. =Testing Techniques= * Black Box Test *# Functionality Testing *# GUI Testing *# Performance Testing *# Stress and Load Testing *# Compatibility Test * White Box Testing *# Code Coverage *# Path Coverage *# Code Analysis * Manual Test * Automation Test *# Development Process Study *# Testing Tools Selection *# Implementation =Strategies= * Black-Box Testing ** exhaustive input testing (impractical) ** unconcerned about the internal behaviour and structure; ** concentrate on finding circumstances in which the program does not behave according to its specifications. * White-Box Testing ** aka: logic-driven testing (may NOT cover the specification) ** exhaustive path testing (impractical, missing critical path, insufficient without exhaustive input test) Approaches # Identifying Equivalence Classes - EC # Defining the test cases ## Assign a unique identifier to each EC. ## Write test cases to cover all the valid ECs. A single test case can cover more than one EC. ## Write test cases to cover all the invalid ECs. A single test case can cover one and only one invalid EC. =Principles= * Definition of expected result *# An explicit description of the input *# A precise description of the correct output for that set of input Refer to basic principles =Full Life cycle= # Identify Requirements # Acceptance Criteria # Strategy and Design # Planning # Executing # Defect Tracking and Bug Fix # Review and Audit # Acceptance and Baseline # Identify Requirements # ... =Testing Process= * V-Model open =Methodologies= * Agile click * Waterfall click =Agile Testing Challenges= * Team may not value testers; * Testers may not value team; * Unclear role of testers on the team; * Testing is often squeezed to the deadlines; * Developers and tester are often in different operational silos; * Team may not have the skills/domain expertise/time/attention to develop/execute test cases effectively. Reference click =Automation Testing= Concepts * TDD * BDD / DDD * CDT ** James Bash ** Context-Driven-Testing Automation Frameworks Why automation? * Provides safety net * Supports rapid iterations * Provides footholds to keep notching upward * Provides rapid feedback * Focuses effort on what is valuable * Frees people to do their best work TDD Test Driven Development ; Test Driven Development / Test First Development * JUnit * TestNG ; Parallel * Run JUnit in parallel click * Maven fork option click Web Testing * Selenium Note * soapUI * Browsers ** Firefox + XPath Checker (Right click -> View XPath) ** Chrome + XPath Helper (X + Shift + Ctrl) BDD Behavior Driven Development * Cucumber Ruby ** Cucumber Learning Note incomplete ** Watir / Watij * Cucumber-jvm ** Cucumber-jvm Learning Note in-progress ** Parallel click ** IBM Automated testing with Selenium and Cucumber click * RSpec * Concordion (readable bdd) * fitnesse (wiki to bdd cases) * JBehave ** jBehave Learning Note Defect Detection Tbd Defect Prevention Tbd Refer software-defect-prevention-nutshell =Test Management= TestLink * Get Started with TestLink click ** TestLink requires httpd server, Apacheloungh click ** TestLink and LDAP click * How to Update TestLink Test Case Execution Status Remotely Through Selenium click Zephyr * REST API click click jira-rest ** Create test step click * Zephyr SOAP API v4.6 =Continuous Integration= * Continuous Integration * Jenkins =Mobile Test= Likely Failure Criteria 1. You are using indexes in too many places so as to identify elements in your screen. 2. You are using Image recognition or OCR extensively and not for content verification. 3. When running the same script on a device with different screen sizes, it never works on the first try. 4. Scrolling the device screen is coordinate-based and very hard to stabilize. 5. You are wasting more time in stabilizing your tests than on building them. 6. You feel frustrated every time you open the test environment due to its slowness and unpredictability 7. You are working for several months but only have a dozen tests 8. You can’t remember the last time that all the tests ran successfully. 9. You aren't controlling all the parts of your automation environment such as devices and versions 10. You are masking the project status from your managers. 11. You don’t have a process where the tests run 24/7. 12. Deploying the build production (IPA / APK) from the R&D is a manual process. =Oogler Testing= Roles * SWE - Software Engineer * SET - Software Engineer in Test * TE - Test Engineer SET/TE who can programs effectively in multiple languages. Responsibilities * SWE write test code * SET - write test infrastructure * TE - execute, track, coordinate and ... the tests. =Certificate= ISTQB * http://swtestengineers.blogspot.com.au/2012/04/full-study-material-for-istqb.html * http://istqbexamcertification.com/category/fundamentals-of-testing/